package cn.cjxy.javaweb.servlet.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 请求行相关的方法
 * ● String getMethod()：得到请求的方式（GET或POST等）
 * ● String getRequestURI()：得到请求的URI /demo1 只是地址的一部分，Uniform Resource Identifer 统一资源标识符
 * ● StringBuffer getRequestURL()：得到请求的URL http://localhost:8080/demo1 Uniform Resource Locator 统一资源定位符
 * ● String getProtocol()：得到请求行中的协议和版本 HTTP/1.1
 * ● String getContextPath()：得到当前项目的访问地址 /02_Request
 * ● String getRemoteAddr()：得到客户端的IP地址 127.0.0.1
 * ● String getServletPath()：得到当前Servlet的访问地址 /demo1
 *
 *  请求头相关方法的使用
 * 请求头中是由各种键值对组成，通过键得到值，相关方法如下：
 * 请求方法	功能描述
 * String getHeader(String headName)	通过键的名字得到相应的值，返回字符串类型的值
 * Enumeration<String> getHeaderNames()	得到所有的请求头中的键名字，返回枚举类型。 枚举类型类似于迭代器，可以理解为是一个集合
 * java.util.Enumeration接口中方法	说明
 * boolean hasMoreElements()	判断枚举中是否还有下一个元素，如果有返回true
 * E nextElement()	得到某个元素，并且下移一行
 *
 * @author huangjie
 * @date 2025/9/29
 */
@WebServlet("/reqdemo1")
public class RequestDemo1 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置网页响应格式
        resp.setContentType("text/html;charset=utf-8");
        //得到写对象
        PrintWriter writer = resp.getWriter();
        writer.println("请求方式：------"+req.getMethod());
        writer.println("请求URI：------"+req.getRequestURI());
        writer.println("请求servlet地址：------"+req.getServletPath());
        writer.println("请求头的值----"+req.getHeader("Accept"));
    }
}
